package com.monolithiot.sso.common.context;

/**
 * 2018/12/10 Create by 郭文梁
 * Constants
 * 系统共享常量
 *
 * @author 郭文梁
 * @date 2018/12/10
 */
public class Constants {
    /**
     * 默认用户组号码长度
     */
    public static final int DEFAULT_USER_GROUP_ID_NUMBER_LENGTH = 8;

    private Constants() {
    }

    /**
     * 2018/12/10 Create by 郭文梁
     * SQL
     * SQL常量
     *
     * @author 郭文梁
     * @date 2018/12/10
     */
    public static class SQL {
        private SQL() {
        }

        /**
         * 降序
         */
        public static final String DESC = "desc";
        /**
         * 升序
         */
        public static final String ASC = "asc";
        /**
         * JDBC主键生成器名称
         */
        public static final String GENERATOR_JDBC = "JDBC";
    }

    public static class Key {
        private Key() {
        }

        /**
         * 用户登陆后保存在Session中的Key
         */
        public static final String SESSION_USER = "monolithIoT.user";
        /**
         * 用户登录授权完成后，授权信息保存在Session中的Key
         */
        public static final String SESSION_AUTHORIZATION = "monolithIoT.authorization";
        /**
         * 用户进入授权系统时，传入的返回路径保存在Session中的Key
         */
        public static final String SESSION_AUTHORIZATION_RETURN_URL = "monolithIoT.returnUrl";
        /**
         * 免登录Cookie名称
         */
        public static final String REMEMBER_COOKIE_NAME = "Access-Token";
        /**
         * 验证码保存在Sessio中的Key
         */
        public static final String SESSION_VERIFY_CODE = "monolithIoT.kaptcha_verify_code";
    }

    /**
     * 2018/12/13 Create by 郭文梁
     * View
     * 视图常量
     *
     * @author 郭文梁
     * @date 2018/12/13
     */
    public static class View {
        /**
         * 子系统授权未指定returnUrl时，默认返回的路径
         */
        public static final String DEFAULT_RETURN_URL = "/user-home.html";

        /**
         * 登录视图
         */
        public static final String LOGIN_VIEW = "/login.html";

        /**
         * 重定向视图前缀
         */
        static final String REDIRECT_PREFIX = "redirect:";

        /**
         * 生成重定向视图名称
         *
         * @param path 目标地址
         * @return 视图名称
         */
        public static String redirect(String path) {
            return REDIRECT_PREFIX + path;
        }

        private View() {
        }
    }

    /**
     * 2018/12/13 Create by 郭文梁
     * Auth
     * 授权相关常量
     *
     * @author 郭文梁
     * @date 2018/12/13
     */
    public static class Auth {
        private Auth() {
        }

        /**
         * 默认授权有效时间：两小时 单位 ：秒
         */
        public static final int DEFAULT_EXPIRE_IN_TIME = 7200;
        /**
         * 默认记住登录的Cookie生存时间 1周 单位：秒
         */
        public static final int DEFAULT_REMEMBER_COOKIE_LIVE_TIME = 60 * 60 * 24 * 7;
        /**
         * 默认设备授权时长：一个月 （秒）
         */
        public static final int DEFAULT_DEVICE_AUTHORIZATION_EXPIRE_IN = 60 * 60 * 24 * 30;
        /**
         * 默认返回URL时传入的Token名称
         */
        public static final String DEFAULT_RETURN_TOKEN_PARAM_NAME = "token";
        /**
         * 默认过去授权删除进程周期 1分钟
         */
        public static final long DEFAULT_OVERDUE_DELETE_PROCESS_RATE = 1000 * 60;
    }
}
